Multiple bitrate streaming involves allowing a client to adaptively request different versions of a media program that has been encoded at multiple bitrates. For example, a client can select which version of a media program to request based on the available bandwidth or download speed. When the client determines that the available bandwidth is greater than the bitrate of the current version of the media program being downloaded, the client can request a higher bitrate version of the media program. In contrast, when the client determines that the available bandwidth is lower than the current bitrate of the current version of the media program being downloaded, the client can request a lower bitrate version of the media program.
The media program is split into multiple segments, which allows the client to change bitrates when requesting a new segment. For example, the media program may be split into multiple segments of equal time, such as 5-second segments. In other examples, the media program may be split into segments of different sizes, such as different segments may be 5 seconds, 7 seconds, 3 seconds, etc. The difference in segment size may be based on various media program characteristics, such as complexity. When playing the media program, a media player may request a segment of the media program to download. The entire segment needs to be downloaded before playback of that segment can begin. For example, the 5-second segment must be downloaded before playback can begin for that segment. When a user seeks in the media program to a seeking position, the media player can download the segment containing the seeking position and then start playback once the segment is downloaded.